#封装验证方法
import re

from django.db.models import Q

from apis.user.models import User


def unique(username,phone,email):
    '''
    :param username: 用户名传参判断唯一性
    :param phone: 用户名传参判断唯一性
    :param email: 用户名传参判断唯一性
    :return: 返回具体的字典信息
    '''

    if  username or  phone or  email:
        if username:
            # 正则验证
            is_name = re.match('^[a-zA-Z0-9_-]{4,16}$', username)
            if not is_name:
                return {"error_code": 400, "message": "用户名不符合规则，请重新输入"}
        if phone:
            is_phone = re.match('^(13|14|15|18)[0-9]{9}$', phone)
            if not is_phone:
                return {"error_code": 400, "message": "手机号不符合规则，请重新输入"}
        if email:
            is_email = re.match('\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}', email)
            if not is_email:
                return {"error_code": 400, "message": "邮箱不符合规则，请重新输入"}
        user = User.objects.filter(Q(email=email)|Q(phone=phone)|Q(username=username), status=1).first()
        if user:
            return {"error_code": 400, "message": "用户已占用，请重新输入"}
        else:
            return {"error_code": 200, "message": "验证成功，可以使用"}
    return {"error_code": 400, "message": "数据不全，请输入"}